In a text that comes with a separator, I need to create several paragraphs for a document written in LaTeX. The purpose of this code is to replace any content within quotes with textquote{the text}
Let’s assume the following text:
$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.";
I need to create the following content:
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.%
}
I can achieve this with the following code without any problem:
$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;
My problem arises when the opening and closing quotes are placed in different groups when doing the explode
. In that case, the replacement with textquote{...}
does not work as expected.
Suppose the following code:
The content of $str
is as follows:
$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.";
The final result is as follows:
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}.%
}
But the expected result is:
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}.%
}
How could I achieve the expected result in all cases?
2
Answers
Based on the example you provided, I have a simple solution. I assume that the
|
symbol is preceded by.
here.You can replace
.|
with}.|textquote{
in the matching text to insert an additionaltextquote
block.Preprocess your string before your replacement like that:
About your formatted string, you can also write it like that: