html parsing — pregreplace url

я пытаюсь использовать preg_replace на URL к изображению в формате HTML и превратить его в BBCode.

От: <img src="http://website.com/char/sign/Name+Surname.png">

Для того, чтобы: [sign]Name+Surname[/sign]

Примечание: имя файла png может быть просто Name, он может содержать отчество, например: Name+Middlename+Surnameтакже может содержать - а также %2527 лайк Carl-Philips или же Bob+Mc%2527Donalds

Так что это то, что я пробовал до сих пор, но он ничего не делает. Что я делаю неправильно?

$source = array(
'#\<img src=\"http\:\/\/website.com\/char\/sign\/\>(.+).png\>#isU'
);

$new = array(
'[sign]$1[/sign]'
);

$text = preg_replace($source, $new, $text);

0

Решение

Вы должны использовать парсер (Как вы анализируете и обрабатываете HTML / XML в PHP?) за это в будущем. У вас есть несколько опечаток в вашем регулярном выражении.

Это должно выполнить то, что вы после:

/<img src="http:\/\/website\.com\/char\/sign\/(.+?)\.png">/

Демо (с объяснением регулярных выражений): https://regex101.com/r/sT6aG9/1

Пример PHP:

$source = '/<img src="http:\/\/website\.com\/char\/sign\/(.+?)\.png">/';
$new = '[sign]$1[/sign]';
$text = '<img src="http://website.com/char/sign/Name+Surname.png">, <img src="http://website.com/char/sign/Bob-Robinson.png">, <img src="http://website.com/char/sign/Michael%2527Ross.png">';
$text = preg_replace($source, $new, $text);
echo $text;

Выход:

[sign]Name+Surname[/sign], [sign]Bob-Robinson[/sign], [sign]Michael%2527Ross[/sign]

PHP Demo: http://3v4l.org/WC5oJ

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]