webForumDet fria alternativet

Manipulera referenser i preg_replace()

PHPur PHP

3 svar · 219 visningar · startad av Skarre

Medlem sedan apr. 20012 427 inlägg
Frågan#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".

137 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)