Manipulera referenser i preg_replace()

PHP

3 svar · 223 visningar · startad av Skarre

Medlem sedan apr. 20012 427 inlägg
Trådstart#1

Jag försöker se till att texten mellan a-taggarna i länkar bryts efter ett visst antal tecken, men lyckas inte riktigt. Jag antar att man inte kan köra en referens genom en funktion som jag gjort nedan (se den röda koden), så jag undrar om någon kan föreslå vad jag kan göra istället.

//Teststräng
$s = '<a href="http://www.test.se">http://www.dettaarenvaldigtvaldigtvaldigtvaldigtlangurl.se</a> asdasd asd ';

echo preg_replace('/(<a .*>)(.*)(<\/a>)/', '$1'.[red][b]wordwrap("$2",20,'<br>',1)[/b][/red].'$3', $s);
Medlem sedan aug. 20002 975 inlägg
#2

Testa med:

echo preg_replace('/(<a .*>)(.*)(<\\/a>)/e', "'$1'.wordwrap('$2',20,'<br>',1).'$3'", $s);

[EDIT]
webForum-koden lägger visst till mellanslag mellan > och ). De ska inte vara där.

Medlem sedan apr. 20012 427 inlägg
#3

Perfektion! :)

Medlem sedan apr. 20012 427 inlägg
#4

Jag kan tillägga att jag var tvungen att lägga till stripslashes() eftersom citationstecknen i strängen blev "slashade".

546 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
263 ms — deklarationer (db)
121 ms — hämta statistik (db)
133 ms — hämta tråd, inlägg och bilagor (db)
284 ms — ändringar (db)