Замена строки в PHP - PullRequest
       12

Замена строки в PHP

0 голосов
/ 13 августа 2011

У меня есть длинная строка, как

$str = "this is [my] test [string] and [string] is very long [with] so many pwords]"

Я знаю str_replace функцию, но когда я заменяю

$str = str_replace( "[", "<a href=\"/story.php?urdu=",$str;
$str = str_replace( "]", "\"></a>",$str;

я получил этот результат

<a href="/index.php?word=test"></a>

но я хочу этот результат для каждого слова в []

<a href="/index.php?word=test">test</a>

Ответы [ 2 ]

1 голос
/ 13 августа 2011
$str = preg_replace_callback(
  '/\[([^\]]*)\]/',
  function($matches) {
    return sprintf('<a href="/index.php?word=%s">%s</a>',
      urlencode($matches[1]),
      htmlspecialchars($matches[1]));
  },
  $str);
1 голос
/ 13 августа 2011

Вы должны использовать preg_replace() для этого.

код

<?php
    function replace_matches($matches) {
        $text = htmlspecialchars($matches[1]);
        $url = urlencode($matches[1]);
        return "<a href=\"/story.php?urdu={$url}\">{$text}</a>";
    }    
    $str = "this is [my] test [string] and [<script>alert(1)</script>] is very long [with] so many pwords]";
    $str = preg_replace_callback("%\[(.+?)\]%", "replace_matches", $str);

    echo $str;
?>

Рабочий пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...