Значение str_replace, которое начинается с x и заканчивается x - PullRequest
0 голосов
/ 04 января 2019

Я хочу использовать функцию str_replace для изменения многих значений следующим образом;

<p><a href="gogole.com">gogole</a>a ramdom text</p>

до

<p>a ramdom text</p>

или снова

<p><a style="color:red;" href="stackoverflow.com">stackoverflow</a>a ramdom text</p>

до

<p>a ramdom text</p>

так как я могу это сделать? спасибо

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Вы можете получить позицию в начале как:

$start = strpos($myString, "<a ");

и конец, как:

$end = strpos($myString, "</a>" + 4);

и затем:

$myNewString = substr($myString, 0, $start).substr($myString, $end);

Конечно, вам нужно следить за крайними случаями, такими как <a> или </a>, которых нет в строке, или строка заканчивается на </a>.

0 голосов
/ 04 января 2019

Поскольку строка, которую вы хотите заменить, не полностью предсказуема, вам нужно использовать регулярное выражение. Вот быстрый и грязный пример для этого случая с использованием preg_replace () :

$string = '<p><a href="gogole.com">gogole</a>a ramdom text</p>';
$stripped = preg_replace("/<a .*?<\/a>/", "", $string);

но регулярные выражения могут быть хитрыми, поэтому будьте осторожны.

Редактировать: исправлено выражение, предложенное в комментариях. Другая возможность может быть /<a [^<]*<\/a>/.

...