Manipulating links with accents

1

I am capturing news links posted to a particular site using the following code:

        function academia(){

            function makeNews(res){
                var soup = $(res.responseText).find('div [class~="tileImage"] h2');

                soup.each(function(e){

                    var title = $(this).find('a').text();
                    var link = $(this).find('a').attr('href');                              
                    var noticie = '<table class="noticias"><tr><td class="noticia_link" rowspan="3"><a href="http://www.fab.mil.br' + link + '" target="_blank">' + title + '</a></td></tr></table>';

                    $('#news-list').append(noticie);
                    $('.loading-alert').hide();
                    $('.news-list-title').css('visibility','visible');

                });
            }


            $.ajax({
                url: 'http://www.fab.mil.br/noticias/tag/SANTOS_DUMONT',
                type: 'GET',
                success: makeNews
            });
        }


        $(function() {
            academia();
        });

The problem is that the links have the news headline with accents and everything.

When I load the page (generated with php) where they will be listed, the symbols appear as swapped. For example: link

They give 404 error when they are opened. I tried different charsets in php but it does not work.

Are there any simple outputs to capture links exactly as they are?

ADDITION: This is the code that goes on the php page

    <div class="loading-alert">
    <h2>Buscando noticias...</h2>
    </div>
    <ul id="news-list"></ul>

E This is the code that does the actual work:

    /**
     * jQuery.ajax mid - CROSS DOMAIN AJAX 
     * ---
     * @author James Padolsey (http://james.padolsey.com)
     * @version 0.11
     * @updated 12-JAN-10
     * ---
     * Note: Read the README!
     * ---
     * @info http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/
     */

     jQuery.ajax = (function(_ajax){

     var protocol = location.protocol,
     hostname = location.hostname,
     exRegex = RegExp(protocol + '//' + hostname),
     YQL = 'http' + (/^https/.test(protocol)?'s':'') + '://query.yahooapis.com/v1/public/yql?callback=?',
    query = 'select * from html where url="{URL}" and xpath="*"';

function isExternal(url) {
    return !exRegex.test(url) && /:\/\//.test(url);
}

return function(o) {

    var url = o.url;

    if ( /get/i.test(o.type) && !/json/i.test(o.dataType) && isExternal(url) ) {

        // Manipulate options so that JSONP-x request is made to YQL

        o.url = YQL;
        o.dataType = 'json';

        o.data = {
            q: query.replace(
                '{URL}',
                url + (o.data ?
                    (/\?/.test(url) ? '&' : '?') + jQuery.param(o.data)
                : '')
            ),
            format: 'xml'
        };

        // Since it's a JSONP request
        // complete === success
        if (!o.success && o.complete) {
            o.success = o.complete;
            delete o.complete;
        }

        o.success = (function(_success){
            return function(data) {

                if (_success) {
                    // Fake XHR callback.
                    _success.call(this, {
                        responseText: (data.results[0] || '')
                            // YQL screws with <script>s
                            // Get rid of them
                            .replace(/<script[^>]+?\/>|<script(.|\s)*?\/script>/gi, '')
                    }, 'success');
                }

            };
        })(o.success);

    }

    return _ajax.apply(this, arguments);

     };

     })(jQuery.ajax);
    
asked by anonymous 22.07.2014 / 16:57

1 answer

0

You can remove the slug by regex:

<?php
$url = "http://www.fab.mil.br/noticias/mostra/18047/TREINAMENTO---Cadetes-da-Academia-da-For%E7a-A%E9rea-realizam-instru%E7%E3o-de-salto-de-emerg%EAncia-";
preg_match('~(.+)(\d*\/)~', $url, $semSlug);
var_dump($semSlug[1]);
?>
    
23.07.2014 / 00:34