ПОМОГИТЕ! Следует ли использовать str_replace с оператором взрыва вместе с регулярным выражением? - PullRequest
0 голосов
/ 02 апреля 2011

У меня есть две строки

$string1 = "� 2~07225~ 3~0430~ 4~01254~ 5~0853~* 7~08064~ 8~0853~ 10~0776~."

$string2 = "from the start Lisa drafted the paper for the project." 

Мне нужен вывод строки (эхо), который должен быть следующим (с надстрочными знаками):

"С самого начала (07225) Лиза (0430) составила (01254) бумагу * (0853) (08064) для проекта * (0853) (0776)."

я должен использовать str_replace с оператором explode вместе с регулярным выражением?

* представлены в виде невидимого заполнения прилагательного, такого как «синяя» (853) бумага и «научный» (853) проект.

Кто-нибудь готов принять вызов?

Я потратил бесчисленные часы, пытаясь понять это.

пожалуйста, помните, php начинает считать с 0 ...

JC

1 Ответ

3 голосов
/ 02 апреля 2011

Звучит как домашняя работа, поэтому я дам вам ключевые подсказки, а не код.

Разделить слова проще всего и действительно использует разнесение:

$words = explode(" ", $string2);

Регулярное выражение тоже довольно просто:

preg_match_all('#(\d+)~(\d+)~([*]?)#', $string1, $matches,
     PREG_SET_ORDER);

Вам в основном придется проповедовать по $ match. Здесь вы найдете слово index в [1] и номер заполнения в [2]:

foreach ($matches as $row) {

    list( , $word_index, $fill_number, $asteriskthingy) = $row;

Чтобы собрать выходную строку, вам необходимо:

  • Получить слова $ из $ last_index в текущий $ word_index. Используйте array_slice здесь.
  • Добавить номер заполнения.
  • Или делать то, что должно означать *. Вы не объяснили логику этого изменения, поэтому; без понятия.
...