Как я могу проверить, есть ли в PHP только открывающие или закрывающие кавычки для замены?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как я могу проверить, есть ли в PHP только открывающие или закрывающие кавычки для замены?

Сообщение Anonymous »

В тексте, который содержит разделитель, мне нужно создать несколько абзацев для документа, написанного на LaTeX. Цель этого кода — заменить любое содержимое в кавычках на \textquote{текст
Предположим, что это следующий текст:

Код: Выделить всё

$str="Irán pueblos numerosos diciendo: «Vamos a subir al monte del Señor, al templo del Dios de Jacob».|Él nos enseñará sus caminos y caminaremos por sus sendas.|Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.";
Мне нужно создать следующий контент:

Код: Выделить всё

\fourargs
{Irán pueblos numerosos diciendo: \textquote{Vamos a subir al monte del Señor, al templo del Dios de Jacob}.}
{%
Él nos enseñará sus caminos y caminaremos por sus sendas.%
}{%
Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.%
}{%
Él nos enseñará sus caminos y caminaremos por sus sendas.%
}

Я без проблем могу добиться этого с помощью следующего кода:
DEMO

Код: Выделить всё

$str="Irán pueblos numerosos diciendo: «Vamos a subir al monte del Señor, al templo del Dios de Jacob».|Él nos enseñará sus caminos y caminaremos por sus sendas.|Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.";
$html="";
$break=PHP_EOL."\t";
$quotes=["/'(.*?)'/",'/"(.*?)"/',"/«(.*?)»/","/“(.*?)”/"];
$textquote="\\textquote{\$1}";
$fourArgs="
\\fourargs
{%s}
{%%
%s%%
}{%%
%s%%
}{%%
%s%%
}";
$tmp=explode('|',preg_replace($quotes,$textquote,$str));
$html.=sprintf($fourArgs,
$tmp[0],
$tmp[1],
$tmp[2],
$tmp[1]
);
echo $html;
Моя проблема возникает, когда при разнесении открывающие и закрывающие кавычки помещаются в разные группы. В этом случае замена на textquote{... не работает должным образом.
Предположим следующий код:
DEMO
Содержимое $str следующее:

Код: Выделить всё

$str="Irán pueblos numerosos diciendo: «Vamos a subir al monte del Señor, al templo del Dios de Jacob.|Él nos enseñará sus caminos y caminaremos por sus sendas».|Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.";
Окончательный результат выглядит следующим образом:

Код: Выделить всё

\fourargs
{Irán pueblos numerosos diciendo: \textquote{Vamos a subir al monte del Señor, al templo del Dios de Jacob.}
{%
Él nos enseñará sus caminos y caminaremos por sus sendas}.%
}{%
Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.%
}{%
Él nos enseñará sus caminos y caminaremos por sus sendas}.%
}
Но ожидаемый результат:

Код: Выделить всё

\fourargs
{Irán pueblos numerosos diciendo: \textquote{Vamos a subir al monte del Señor, al templo del Dios de Jacob}.}
{%
\textquote{Él nos enseñará sus caminos y caminaremos por sus sendas}.%
}{%
Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.%
}{%
\textquote{Él nos enseñará sus caminos y caminaremos por sus sendas}.%
}
Как во всех случаях добиться ожидаемого результата?

Подробнее здесь: https://stackoverflow.com/questions/791 ... o-make-rep
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

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

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»