Hola, el objetivo final es agregar automáticamente enlaces a los números de esta lista
Código HTML:
Ver original <li>Caso 1 (Art. 500).
</li> <li>Caso 2 (Art. 600-a).
</li> <li>Caso 3 (Art. 700 y 1000).
</li> <li>Caso 4 (Art. 800-a y 1000).
</li> <li>Caso 5 (Art. 900 y 1000-a).
</li> <li>Caso 6 (Art. 999-a y 1000-b).
</li> <li>Caso 7 (Art. 320, 497, 68, 5, 2360-e, 410 y 903).
</li>
El sistema debe encontrar automáticamente las coincidencias y convertirlas en algo como esto:
Código HTML:
Ver original <li>Caso 1 (Art.
<a href="http://sitio.com/art-500">500
</a>).
</li> <li>Caso 2 (Art.
<a href="http://sitio.com/art-600">600-a
</a>).
</li> <li>Caso 3 (Art.
<a href="http://sitio.com/art-700">700
</a> y
<a href="http://sitio.com/art-1000">1000
</a>).
</li> ...
Por supuesto además de la lista existe un montón de texto extra. La forma más lógica que pude pensar fue
convertir lista y datos en arrays para luego encararlas con strtr(), de manera que
el reemplazo se haga sólo en la zona indicada (en lugar de ejecutarse en otra coincidencia que exista en el texto completo). Lo hice de esta forma:
Código PHP:
Ver original$patron = "/\(Art. .*\)/";
foreach ($coinc[0] as $k => $v) {
}
Con esto logré sacar ambos arrays. El de los
datos:
Código PHP:
Ver original// Resultado:
(
(
[0] => 500
)
(
[0] => 600-a
)
(
[0] => 700
[1] => 1000
)
(
[0] => 800-a
[1] => 1000
)
(
[0] => 900
[1] => 1000-a
)
(
[0] => 999-a
[1] => 1000-b
)
(
[0] => 76
[1] => 763
[2] => 829
[3] => 860
[4] => 872
[5] => 879
[6] => 881-x
[7] => 921
[8] => 927
[9] => 928
[10] => 954
[11] => 1085
[12] => 1127
[13] => 1140
)
)
y el de las
listas:
Código PHP:
Ver original// Resultado:
(
[0] => (Art. 500)
[1] => (Art. 600-a)
[2] => (Art. 700 y 1000)
[3] => (Art. 800-a y 1000)
[4] => (Art. 900 y 1000-a)
[5] => (Art. 999-a y 1000-b)
[6] => (Art. 320, 497, 68, 5, 2360-e, 410 y 903)
)
El problema que no logro resolver es que el
array de datos salga así:
Código PHP:
Ver original(
(
[500] => <a href="http://sitio.com/art-500">500</a>
)
(
[600-a] => <a href="http://sitio.com/art-600-a">600-a</a>
)
(
[700] => <a href="http://sitio.com/art-700">700</a>
[1000] => <a href="http://sitio.com/art-1000">1000</a>
)
...
He tratado de modificar esas claves y valores, pero no puedo hacerlo sin que el array pierda la actual estructura. Agradecido a quien me pueda orientar. Dejo el archivo completo por si alguien quiere probar:
Código PHP:
Ver original<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8" />
<title>Indice</title>
<style type="text/css">
* { margin: 0; padding: 0; }
body { font: normal normal normal 13px Lucida Sans Unicode; background: #fff; }
</style>
</head>
<body>
<?php
$html ='
<ul>
<li>Caso 1 (Art. 500).</li>
<li>Caso 2 (Art. 600-a).</li>
<li>Caso 3 (Art. 700 y 1000).</li>
<li>Caso 4 (Art. 800-a y 1000).</li>
<li>Caso 5 (Art. 900 y 1000-a).</li>
<li>Caso 6 (Art. 999-a y 1000-b).</li>
<li>Caso 7 (Art. 320, 497, 68, 5, 2360-e, 410 y 903).</li>
</ul>';
$patron = "/\(Art. .*\)/";
foreach ($coinc[0] as $k => $v) {
}
echo '<pre style="background: #efefef; font-family: Lucida Console; padding: 8px;margin-bottom: 8px;">'. print_r($array , true) .'</pre>'; ?>
</body>
</html>